<?xml version="1.0" encoding="UTF-8"?>
<!--
    IPR, License and Distribution Notices
    This machine readable file is derived from IMS specification IMS Content Packaging Version: 1.2 
    found at http://www.imsglobal.org/content/packaging/ and the original IMS schema binding or code base 
    http://www.imsglobal.org/content/packaging/.
    
    Recipients of this document are requested to submit, with their comments, notification of any relevant patent 
    claims or other intellectual property rights of which they may be aware that might be infringed by the schema 
    binding contained in this document.
    
    IMS takes no position regarding the validity or scope of any intellectual property or other rights that might be 
    claimed to pertain to the implementation or use of the technology described in this document or the extent to 
    which any license under such rights might or might not be available; neither does it represent that it has made 
    any effort to identify any such rights. Information on IMS�s procedures with respect to rights in IMS specifications 
    can be found at the IMS Intellectual Property Rights web page: http://www.imsglobal.org/ipr/imsipr_policyFinal.pdf.
    
    Copyright © IMS Global Learning Consortium 1999-2008. All Rights Reserved.
    
    License Notice for Users
    Users of products or services that include this document are hereby granted a worldwide, royalty-free, 
    non-exclusive license to use this document.
    
    Distribution Notice for Developers
    Developers of products or services that are not original incorporators of this document and have not changed this 
    document, that is, are distributing a software product that incorporates this document as is from a third-party source 
    other than IMS, are hereby granted permission to copy, display and distribute the contents of this document in any 
    medium for any purpose without fee or royalty provided that you include this IPR, License and Distribution notice in its 
    entirety on ALL copies, or portions thereof.
    
    Developers of products or services that are original incorporators of this document and wish to provide distribution 
    of this document as is or with modifications and developers of products and services that are not original incorporators 
    of this document and have changed this document, are required to register with the IMS community on the IMS website 
    as described in the following two paragraphs:
    
    - If you wish to distribute this document as is, with no modifications, you are hereby granted permission to copy, 
    display and distribute the contents of this document in any medium for any purpose without fee or royalty provided 
    that you include this IPR, License and Distribution notice in its entirety on ALL copies, or portions thereof, that you make and you complete a valid license registration with IMS and receive an email from IMS granting the license. 
    To register, follow the instructions on the IMS website: http://www.imsglobal.org/specificationdownload.cfm. Once 
    registered you are granted permission to transfer unlimited distribution rights of this document for the purposes 
    of third-party or other distribution of your product or service that incorporates this document as long as this IPR, 
    License and Distribution notice remains in place in its entirety.
    
    - If you wish to create and distribute a derived work from this document, you are hereby granted permission to copy, 
    display and distribute the contents of the derived work in any medium for any purpose without fee or royalty provided that you include this IPR, License and Distribution notice in its entirety on ALL copies, or portions thereof, that you make and you complete a valid profile registration with IMS and receive an email from IMS granting the license. To register, follow the instructions on the IMS website: http://www.imsglobal.org/profile/. Once registered you are granted permission to transfer unlimited distribution rights of the derived work for the purposes of third-party or other distribution of your product or service that incorporates the derived work as long as this IPR, License and Distribution notice remains in place in its entirety.
    
    The limited permissions granted above are perpetual and will not be revoked by IMS or its successors or assigns.
    
    THIS SPECIFICATION IS BEING OFFERED WITHOUT ANY WARRANTY WHATSOEVER, AND IN PARTICULAR, 
    ANY WARRANTY OF NONINFRINGEMENT IS EXPRESSLY DISCLAIMED. ANY USE OF THIS SPECIFICATION 
    SHALL BE MADE ENTIRELY AT THE IMPLEMENTER�S OWN RISK, AND NEITHER THE CONSORTIUM, NOR 
    ANY OF ITS MEMBERS OR SUBMITTERS, SHALL HAVE ANY LIABILITY WHATSOEVER TO ANY IMPLEMENTER 
    OR THIRD PARTY FOR ANY DAMAGES OF ANY NATURE WHATSOEVER, DIRECTLY OR INDIRECTLY, ARISING 
    FROM THE USE OF THIS SPECIFICATION.
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.imsglobal.org/xsd/imscp_v1p1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="http://www.imsglobal.org/xsd/imscp_v1p1" version="IMS CP 1.2" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd" />
    <xs:annotation>
        <xs:documentation>
            XSD Data File Information
            -------------------------
            Author:       CP1.2 Project Team
            Date:         31st October, 2006
            Version:      2.0
            Status:       CM/DN Release
            Description:  This is a normative representation of the IMS CP 1.2 Information Model for binding 
                          purposes.  Read the corresponding IMS CP Information Model for the Platform 
                          Independent Model representation.

            History:      This is version 1 of the IMS CP v1.2 XSD.  It directly supercedes IMS CP v1.1.4 XSD.
                          Note that the target namespace has NOT been changed.
                          Apart from the functional additions, the main structural changes are:
                          (1) All of the elements and attributes are defined as local to their host object;
                          (2) Comments have been added to the complexType definitions.

            Copyright:    2006 (c) IMS Global Learning Consortium Inc.  All Rights Reserved.
                          IMS Global Learning Consortium, Inc. (IMS/GLC) is publishing the information
                          contained in this binding ("Specification") for purposes of scientific
                          experimental and scholarly collaboration only.  IMS/GLC makes no warranty or 
                          representation regarding the accuracy or completeness of the Specification.
                          This material is provided on an "As Is" and "As Available basis".
                          The Specification is at all times subject to change and revision without
                          notice. It is your sole responsibility to evaluate the usefulness, accuracy
                          and completeness of the Specification as it relates to you.  IMS/GLC would
                          appreciate receiving your comments and suggestions.  Please contact IMS/GLC
                          through our website at: http://www.imsglobal.org.

            Source XSLT File Information
            ----------------------------
            XSL Generator:    UMLtoXSDTransformv0p7.xsl
            XSLT Processor:   Xalan
            Release:          1.0 Beta 1
            Date:             30th November, 2005

            Auto-generation Tool
            --------------------
            This WSDL/XSD was auto-generated using the IMS WSDL/XSD auto-generation tool.  While every attempt
            has been made to ensure that this tool auto-generates the XSDs correctly, users should be aware
            that this is an experimental tool.  Permission is given to make use of this tool.  IMS makes no
            claim on the materials created by third party users of this tool.  Details on how to use this tool
            are contained in the IMS document: "IMS General Web Services: WSDL/XSD Binding Auto-generation"
            available at the IMS web-site.
            Tool Copyright:  2005 (c) IMS Global Learning Consortium Inc.  All Rights Reserved.
        </xs:documentation>
    </xs:annotation>

        <!-- Generate Global Attributes ***********************************************************************  -->

        <!-- =====================================  -->

        <!-- Generate Namespaced extension Group  *************************************************************  -->

            <xs:group name="grpStrict.any">
                <xs:annotation>
                    <xs:documentation>
                        Any namespaced element from any namespace may be included within an "any" element.
                        The namespace for the imported element must be defined in the instance, and the schema must be imported.
                        The extension has a definition of "strict" i.e. they must have their own namespace.
                    </xs:documentation>
                </xs:annotation>
                <xs:sequence>
                    <xs:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded" />
                </xs:sequence>
            </xs:group>

        <!-- =====================================  -->

        <!-- Generate the enumerated simpleType declarations **************************************************  -->

        <!-- =====================================  -->

        <!-- Generate the simpleType elements based IMS data-types  *******************************************  -->

        <!-- =====================================  -->

        <!-- Generate the derived data-type elements **********************************************************  -->

        <!-- =====================================  -->

        <!-- Generate the data-type elements ******************************************************************  -->

            <xs:complexType name="Manifest.Type">
                <xs:annotation>
                    <xs:documentation>
                        A manifest element is a container for data structures whose contents describe a 
                        semantically complete instance of the IMS Content Packaging Information Model.  
                        
                        A manifest element may contain and reference child manifest elements 
                        in the same IMS Manifest document.  The root manifest element defines an 
                        entire IMS Package.  A child manifest element defines a semantically complete 
                        subset of that Package.

                        <p>Represents a binding of the kinds of objects defined as children of ims-cp-imManifest : Manifest.[ ManifestMetadata, Organizations, Resources, Manifest, Extension ].</p>
                    </xs:documentation>
                </xs:annotation>
                <xs:sequence>
                    <xs:element name="metadata" type="ManifestMetadata.Type" minOccurs="0" maxOccurs="1" />
                    <xs:element name="organizations" type="Organizations.Type" minOccurs="1" maxOccurs="1" />
                    <xs:element name="resources" type="Resources.Type" minOccurs="1" maxOccurs="1" />
                    <xs:element name="manifest" type="Manifest.Type" minOccurs="0" maxOccurs="unbounded" />
                    <xs:group ref="grpStrict.any" />
                </xs:sequence>
                <xs:attribute name="identifier" use="required" type="xs:ID" />
                <xs:attribute name="version" use="optional" type="xs:string" />
                <xs:attribute ref="xml:base" use="optional" />
                <xs:anyAttribute namespace="##other" processContents="strict" />
            </xs:complexType>

            <xs:complexType name="Metadata.Type">
                <xs:annotation>
                    <xs:documentation>
                        An instance of the metadata element contains data structures 
                        that declare descriptive information about a metadata element's 
                        parent only.
                        
                        One or more different metadata models may be declared as
                        child extensions of a metadata element.

                        <p>Represents a binding of the kinds of child objects defined for ims-cp-imMetadata:  Metadata.[ Extension ].</p>
                    </xs:documentation>
                </xs:annotation>
                <xs:sequence>
                    <xs:element name="schema" type="xs:string" minOccurs="0" maxOccurs="1" />
                    <xs:element name="schemaversion" type="xs:string" minOccurs="0" maxOccurs="1" />
                    <xs:group ref="grpStrict.any" />
                </xs:sequence>
            </xs:complexType>

            <xs:complexType name="Organizations.Type">
                <xs:annotation>
                    <xs:documentation>
                        The organizations element is a container for all data structures 
                        that describe the way or ways that information encapsulated by 
                        its parent manifest element is structured. 

                        <p>Represents of binding of the child objects of ims-cp-imOrganizations: Organizations.[ Organization, Extension ].</p>
                    </xs:documentation>
                </xs:annotation>
                <xs:sequence>
                    <xs:element name="organization" type="Organization.Type" minOccurs="0" maxOccurs="unbounded" />
                    <xs:group ref="grpStrict.any" />
                </xs:sequence>
                <xs:attribute name="default" use="optional" type="xs:IDREF" />
                <xs:anyAttribute namespace="##other" processContents="strict" />
            </xs:complexType>

            <xs:complexType name="Resources.Type">
                <xs:annotation>
                    <xs:documentation>
                        The Resources element is a container for data structures containing 
                        references  to one or more assets.  Asset references may be grouped 
                        within a containing resources element in whatever manner seems best.
                          
                        The scope of referenced assets is specific to a resources element's parent 
                        manifest element only. 

                        <p>Represents a binding of the kinds of child objects defined for ims-cp-imResources: Resources.[ Resource, Extension ].</p>
                    </xs:documentation>
                </xs:annotation>
                <xs:sequence>
                    <xs:element name="resource" type="Resource.Type" minOccurs="0" maxOccurs="unbounded" />
                    <xs:group ref="grpStrict.any" />
                </xs:sequence>
                <xs:attribute ref="xml:base" use="optional" />
                <xs:anyAttribute namespace="##other" processContents="strict" />
            </xs:complexType>

            <xs:complexType name="Organization.Type">
                <xs:annotation>
                    <xs:documentation>
                        An organization element is a container for all data structures relating 
                        to a particular way or view that information encapsulated by a 
                        grandparent manifest object is structured.  
                        
                        Multiple organization elements within the same parent organizations 
                        element are equivalent in purpose: Each shows a different way for 
                        structuring the same information declared within a grandparent 
                        manifest object.

                        <p>Represents a binding of the kinds of child objects defined for ims-cp-Organization: Organization[ Title, Item, Metadata, Extension ].</p>
                    </xs:documentation>
                </xs:annotation>
                <xs:sequence>
                    <xs:element name="title" type="xs:string" minOccurs="0" maxOccurs="1" />
                    <xs:element name="item" type="Item.Type" minOccurs="1" maxOccurs="unbounded" />
                    <xs:element name="metadata" type="Metadata.Type" minOccurs="0" maxOccurs="1" />
                    <xs:group ref="grpStrict.any" />
                </xs:sequence>
                <xs:attribute name="identifier" use="required" type="xs:ID" />
                <xs:attribute name="structure" use="optional" type="xs:string" />
                <xs:anyAttribute namespace="##other" processContents="strict" />
            </xs:complexType>

            <xs:complexType name="Resource.Type">
                <xs:annotation>
                    <xs:documentation>
                        A resource element is a container for a particular asset 
                        or collection of assets.  A resource may contain references 
                        to assets that are all of the same type or different types (i.e., file formats).
                        
                        The scope or boundary of an IMS Package is defined by the asset 
                        references collected into all resources containers associated with the
                        root manifest element, whether as a child, direcdt descendant, or externally 
                        linked descendant. 

                        <p>Represents a binding of the kinds of child objects defined for ims-cp-imResource: Resource.[ Metadata, File, Dependency, Extension ].</p>
                    </xs:documentation>
                </xs:annotation>
                <xs:sequence>
                    <xs:element name="metadata" type="Metadata.Type" minOccurs="0" maxOccurs="1" />
                    <xs:element name="file" type="File.Type" minOccurs="0" maxOccurs="unbounded" />
                    <xs:element name="dependency" type="Dependency.Type" minOccurs="0" maxOccurs="unbounded" />
                    <xs:group ref="grpStrict.any" />
                </xs:sequence>
                <xs:attribute name="identifier" use="required" type="xs:ID" />
                <xs:attribute name="type" use="required" type="xs:string" />
                <xs:attribute ref="xml:base" use="optional" />
                <xs:attribute name="href" use="optional" type="xs:anyURI" />
                <xs:anyAttribute namespace="##other" processContents="strict" />
            </xs:complexType>

            <xs:complexType name="Item.Type">
                <xs:annotation>
                    <xs:documentation>
                        An item element represents a structural node in a particular organization.  
                        An item element may be a parent or sibling of other Item elements, 
                        each one representing a unique structural node.
                        
                        An organization has no meaning unless it has at least one Item element.

                        <p>Represents a binding of the kinds of child objects of ims-cp-imItem: Item.[ Title, Item, Metadata, Extension ].</p>
                    </xs:documentation>
                </xs:annotation>
                <xs:sequence>
                    <xs:element name="title" type="xs:string" minOccurs="0" maxOccurs="1" />
                    <xs:element name="item" type="Item.Type" minOccurs="0" maxOccurs="unbounded" />
                    <xs:element name="metadata" type="Metadata.Type" minOccurs="0" maxOccurs="1" />
                    <xs:group ref="grpStrict.any" />
                </xs:sequence>
                <xs:attribute name="identifier" use="required" type="xs:ID" />
                <xs:attribute name="identifierref" use="optional" type="xs:string" />
                <xs:attribute name="isvisible" use="optional" type="xs:boolean" />
                <xs:attribute name="parameters" use="optional" type="xs:string" />
                <xs:anyAttribute namespace="##other" processContents="strict" />
            </xs:complexType>

            <xs:complexType name="File.Type">
                <xs:annotation>
                    <xs:documentation>
                        A file element declares a reference to a single asset.  The reference may
                        be relative to the Package containing the file element or absolute 
                        (external to the Package).
                        
                        A file element may contain child extensions declaring alternative references
                         to the same asset as that referenced by the file element's href attribute.

                        <p>Represents a binding of the kinds of child objects defined for ims-cp-imFile: File.[ Metadata, Extension ].</p>
                    </xs:documentation>
                </xs:annotation>
                <xs:sequence>
                    <xs:element name="metadata" type="Metadata.Type" minOccurs="0" maxOccurs="1" />
                    <xs:group ref="grpStrict.any" />
                </xs:sequence>
                <xs:attribute name="href" use="required" type="xs:anyURI" />
                <xs:anyAttribute namespace="##other" processContents="strict" />
            </xs:complexType>

            <xs:complexType name="Dependency.Type">
                <xs:annotation>
                    <xs:documentation>
                        A dependency element provides a way to associate another collection of 
                        asset references within the scope of the dependency element's parent 
                        resource element.
                        
                        This element allows the parsimonious declaration of asset references.  
                        Shared asset references can be declared once and associated many 
                        times through a Dependency element.

                        <p>Represents a binding of the kinds of child objects defined for ims-cp-imDependency: Dependency.[ Extension ].</p>
                    </xs:documentation>
                </xs:annotation>
                <xs:sequence>
                    <xs:group ref="grpStrict.any" />
                </xs:sequence>
                <xs:attribute name="identifierref" use="required" type="xs:string" />
                <xs:anyAttribute namespace="##other" processContents="strict" />
            </xs:complexType>

            <xs:complexType name="ManifestMetadata.Type">
                <xs:annotation>
                    <xs:documentation>
                        This metadata element contains data structures that declare 
                        descriptive information about an entire Package.
                        
                        One or more different metadata models may be declared as
                        child extensions of a metadata element.
                        
                        The schema and schemaversion children define the kind or collection 
                        of metadata models being used.

                        <p>Represents a binding of the kinds of child objects defined for ims-cp-imManifestMetadata:  ManifestMetadata.[ Schema, SchemaVersion, MetadataModel ]..</p>
                    </xs:documentation>
                </xs:annotation>
                <xs:sequence>
                    <xs:element name="schema" type="xs:string" minOccurs="0" maxOccurs="1" />
                    <xs:element name="schemaversion" type="xs:string" minOccurs="0" maxOccurs="1" />
                    <xs:group ref="grpStrict.any" />
                </xs:sequence>
            </xs:complexType>

        <!-- =====================================  -->

        <!-- Declaration of the elements **********************************************************************  -->

        <!-- =====================================  -->

        <!-- Declaration of the root element(s) ***************************************************************  -->

            <xs:element name="manifest" type="Manifest.Type" />

        <!-- =====================================  -->

</xs:schema>
